package controller

import (
	"msems/logic"
	"msems/models"

	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
)

// AdminChangeColtHandler 插入修改删除学院
func AdminChangeColtHandler(c *gin.Context) {
	//1.判断权限
	id, err := GetUserLevelAndP(c, 0)
	if err != nil {
		zap.L().Error("GetCurrentUserID(c)", zap.Error(err))
		ResponseError(c, CodeLevelError)
		return
	}
	// 2.获取参数，参数校验
	p := new(models.ParamCollege)
	if err := c.ShouldBind(p); err != nil {
		// 参数有误
		zap.L().Error("AdminChangeP ShouldBind err", zap.Error(err))
		ResponseError(c, CodeInvalidParam)
		return
	}
	//3.插入数据
	if err := logic.ChangeCol(p, id); err != nil {
		// 参数有误
		zap.L().Error("logic.InsertCol(p) err", zap.Error(err))
		ResponseError(c, CodeInvalidParam)
		return
	}
	//
	// 4.返回响应
	ResponseSuccess(c, nil)
}

// AdminGetColAllHandler 获取所有学院
func AdminGetColAllHandler(c *gin.Context) {
	//1.判断权限
	_, err := GetUserLevelAndP(c, 0)
	if err != nil {
		zap.L().Error("GetCurrentUserID(c)", zap.Error(err))
		ResponseError(c, CodeLevelError)
		return
	}
	//2.获取数据
	college_list, err := logic.GetColAll()
	if err != nil {
		// 参数有误
		zap.L().Error("logic.GetColAll() err", zap.Error(err))
		ResponseError(c, CodeServerBusy)
		return
	}
	//3.返回响应
	ResponseSuccess(c, college_list)
}

// AdminInsertAdminHandler 注册管理员
func AdminInsertAdminHandler(c *gin.Context) {
	//1.判断权限
	id, err := GetUserLevelAndP(c, 0)
	if err != nil {
		zap.L().Error("GetCurrentUserID(c)", zap.Error(err))
		ResponseError(c, CodeLevelError)
		return
	}
	// 2.获取参数，参数校验
	p := new(models.ParamSignUp)
	if err := c.ShouldBind(p); err != nil {
		// 参数有误
		zap.L().Error("AdminChangeP ShouldBind err", zap.Error(err))
		ResponseError(c, CodeInvalidParam)
		return
	}
	//3.插入数据
	if err := logic.AdminSignUp(p, id); err != nil {
		// 参数有误
		zap.L().Error("logic.InsertCol(p) err", zap.Error(err))
		ResponseError(c, CodeInvalidParam)
		return
	}
	//
	// 4.返回响应
	ResponseSuccess(c, nil)
}

//ParamSignUpModel 初始化模型
//func ParamSignUpModel(c *models.ParamSignUp) *models.ParamSignUp {
//	c = &models.ParamSignUp{
//		ClassID:   nil,
//		TeacherID: 0,
//		CollegeID: 0,
//		LeveL:     2,
//
//	}
//	return c
//}
